Interaktivita
Jednou z možností jak přidat interaktivitu do aplikace je prostřednictvím událostí. Argumenty předávané obslužným metodám obsahují užitečné informace o vzniklé události. Je možné tak například zjistit pozici myši na elementu. V ukázkovém příkladu bude použita pozice myši pro počáteční a koncový bod úsečky. Obrázek 3 zobrazuje ukázku kreslení s aplikací InteraktivniUsecka.
Obrázek 3 Kreslení úsečky s aplikací InteraktivníUsecka [zdroj: vlastní]
<Canvas x:Name="canvas"
MouseLeftButtonDown="canvas_MouseLeftButtonDown"
MouseMove="canvas_MouseMove"
Background="White">
</Canvas>
Obsluha události MouseLeftButtonDown
private void canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
//uložím počáteční a koncovou pozici úsečky
start = e.GetPosition(canvas);
konec = e.GetPosition(canvas);
//vytvoření nové úsečky
kreslenaUsecka = new Line();
kreslenaUsecka.Stroke = new SolidColorBrush(Colors.Black);
kreslenaUsecka.StrokeThickness = 2;
//přidáme úsečku do Canvas
canvas.Children.Add(kreslenaUsecka);
}
Obsluha události MouseMove
private void canvas_MouseMove(object sender, MouseEventArgs e)
{
//pokud je zmáčknuté levé tlačítko myši, uprav koncovou pozici úsečky
if (e.LeftButton == MouseButtonState.Pressed)
{
//zjistíme aktuální pozici myši na Canvas elementu
konec = e.GetPosition(canvas);
kreslenaUsecka.X1 = start.X;
kreslenaUsecka.Y1 = start.Y;
kreslenaUsecka.X2 = konec.X;
kreslenaUsecka.Y2 = konec.Y;
}
Ukázkové řešení: 2D Grafika/InteraktivniUsecka
U některých příkladů jsou použity třídy z Microsoft Blend . Přidávající interaktivitu do aplikace. Dovolují například hýbat s UIElementy. Nejednoduší způsob jak tyto třídy přidat do aplikace je přes NuGet.
Ukázka použití interaktivity z Blend
<i:Interaction.Behaviors>
<r:MouseDragElementBehavior />
</i:Interaction.Behaviors>
Přidá interaktivní chování k libovolnému UIElementu.